home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!nic.MR.NET!hal!ncoast!allbery
- From: ccea3@rivm.UUCP (Adri Verhoef)
- Newsgroups: comp.sources.misc
- Subject: v05i018: ml: A catagorial mail divider (sorts by Subject into separate files)
- Keywords: mailx sysV
- Message-ID: <1060@rivm05.UUCP>
- Date: 28 Oct 88 03:02:55 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: ccea3@rivm.UUCP (Adri Verhoef)
- Organization: RIVM, Bilthoven, The Netherlands
- Lines: 204
- Approved: allbery@ncoast.UUCP
-
- Posting-number: Volume 5, Issue 18
- Submitted-by: "Adri Verhoef" <ccea3@rivm.UUCP>
- Archive-name: ml
-
- Daily I receive some 65 to about 100 mail messages as they are contributed
- from some 30 machines by loginnames as
- bin, news, lp, *uucp*
- who have their messages forwarded to a central/private single $MAIL file.
- To put these messages into categories I order them by Subject and put them
- into separate files. Then I pg(1) these files to look at their contents.
-
- - It works as follows:
- I call the mailer to show me the messages with possible Subjects; then I
- order by Subject and awk(1) them into categories; then I s(ave) the
- messages per Subject into files with a useful name; then per file I
- preprocess (e.g. sed(1)) the file and pg(1) the output.
-
- NOTES:
- - Only New or Unread articles are s(ave)d.
- - After reading, the files get processed by 'rm'; you may want to change
- this into a mv(1) command [if your own 'rm' doesn't do that already].
- - You may add or delete Subjects as you prefer personally. If you do so,
- you may have to add or delete a Subject in two (or three) places in 'ml'.
- - The default directory for the saved article files is named "Mail".
-
- Here it is, folks, enjoy:
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: ml
- # Wrapped by a3@rivm on Thu Sep 29 18:26:06 1988
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f ml -a "${1}" != "-c" ; then
- echo shar: Will not over-write existing file \"ml\"
- else
- echo shar: Extracting \"ml\" \(3114 characters\)
- sed "s/^X//" >ml <<'END_OF_ml'
- X#ident "@(#)ml.sh 1.1.3 (a3) 8 aug 1988"
- X# Save certain articles, currently in spooled mailbox, into several files, and
- X# read those files, and clean them up. Then proceed reading the rest.
- X
- X[ -d Mail -a -w Mail ] || { echo "Directory 'Mail' not available."; exit 1; }
- Xcd Mail || exit 2
- X
- Xart_id=1
- Xsender=2
- X#dayOwk=3
- X#monOyr=4
- X#dayOmo=5
- X#timOdy=6
- Xartsiz=7
- Xsubj_1=8
- Xsubj_2=9
- Xsubj_3=10
- Xsubj_4=11
- X
- Xmailx -H |
- X sed -n 's/^ [NU]//p' | #new or unread
- X awk '
- X NF=='$artsiz' {
- X if ($'$sender'~/lp$/) f="lp";
- X if ($'$sender'~/root$/) f="root";
- X if ($'$sender'~/uucp$/) f="uucp";
- X }
- X NF=='$subj_1' {
- X if ($(NF)=="/usr/spool/uucp/.Corrupt") f="Corrupt";
- X if ($(NF)=="cleanup") f=$(NF);
- X if ($(NF)=="cores") f=$(NF);
- X if ($(NF)=="transfer-statistics") f="xfer";
- X if ($(NF)=="uu-status") f=$(NF);
- X }
- X $'$subj_1'=="Newsgroup" {
- X f=$'$subj_1';
- X }
- X NF=='$subj_2' {
- X if ($(NF-1)=="UucpLog") f=$(NF-1);
- X if ($(NF-1)=="trimlib") f=$(NF-1);
- X if ($(NF-1)=="uucp") {
- X if ($(NF)=="Admin") f=$(NF);
- X if ($(NF)=="DENIED") f=$(NF);
- X if ($(NF)=="requests") f=$(NF);
- X }
- X }
- X NF=='$subj_3' {
- X if ($(NF-2)=="Diskgebruik" && $(NF-1)=="op") f=$(NF-2);
- X if ($(NF-2)=="Warning" && $(NF-1)=="From") f=$(NF-2);
- X if ($(NF-2)=="sendsys" && $(NF-1)=="control") f=$(NF-2);
- X if ($(NF-2)=="uucleanup" && $(NF-1)=="ran;") f=$(NF-2);
- X }
- X NF=='$subj_4' {
- X if ($(NF-3)=="Problems" && $(NF)=="active") f=$(NF-3);
- X if ($(NF-3)=="response" && $(NF)=="sendsys") f=$(NF-3);
- X }
- X {
- X if (f=="") next;
- X file[f]=file[f]" "$'$art_id';
- X f="";
- X ct++;
- X }
- X END {
- X if (ct==0) exit(1);
- X for (f in file) {
- X max=480;
- X if (length(file[f]) > max) {
- X n=max;
- X while (substr(file[f],n,1)!=" ") n--;
- X printf("s%s %s\n",substr(file[f],1,n),f);
- X }
- X else printf("s%s %s\n",file[f],f);
- X }
- X for (f in file) if (f=="xfer") { print "|",file[f],"\"pg\""; break; }
- X }
- X ' | { [ $? = 0 ] && mailx; }
- X
- Xfor f in "lp" "root" "uucp" \
- X "Corrupt" "Newsgroup" "cleanup" "cores" "uu-status" \
- X "UucpLog" "trimlib" "Admin" "DENIED" "requests" \
- X "sendsys" "uucleanup" "Diskgebruik" "Warning" \
- X "Problems" "response" \
- X # "xfer" # Always as last one. But already taken care of.
- Xdo
- X [ -f "$f" ] || continue
- X echo $f
- X case $f in
- X "Diskgebruik") mailx -f "$f";;
- X "UucpLog") pg "$f";;
- X "uu-status")
- X sed '
- X /^From/ {
- X N
- X D
- X }
- X /^>From/ {
- X N
- X /^>From.*\n>From/ {
- X D
- X }
- X }
- X s/\nSubject: .*//
- X /^Status: /d
- X /^$/d
- X ' "$f" | pg;;
- X "Admin"|"Corrupt"|"DENIED"|"Problems"|"cleanup"|"lp"|"requests"|"root"|"uucp")
- X sed '
- X /^From/ {
- X N
- X /^From.*\n>From/ {
- X D
- X }
- X }
- X /^>From/ {
- X N
- X /^>From.*\n>From/ {
- X D
- X }
- X }
- X s/\nSubject: .*//
- X s/\nStatus: .*//
- X /^Status: /d
- X /^$/d
- X ' "$f" | pg;;
- X# "Corrupt"|"lp"|"root"|"uucp")
- X# sed '
- X# /^Status: /d
- X# /^$/d
- X# ' "$f" | pg;;
- X "trimlib")
- X sed '
- X /^>From /d
- X /^To: /d
- X /^Status: /d
- X ' "$f" | pg;;
- X "uucleanup") sed -n '/.Xqtdir/p' "$f" | pg;;
- X # "xfer") ;;# Already taken care of.
- X *)
- X sed '
- X /^>From /d
- X /^Status: /d
- X /^$/d
- X ' "$f" | pg
- X ;;
- X esac
- X [ $? = 0 ] && [ "xfer" != "$f" ] && rm "$f"
- Xdone
- X
- Xecho "Read mail ? [YN]\c"
- Xread x
- Xcase $x in
- X [Yy]) exec mailx;;
- Xesac
- END_OF_ml
- if test 3114 -ne `wc -c <ml`; then
- echo shar: \"ml\" unpacked with wrong size!
- fi
- chmod +x ml
- # end of overwriting check
- fi
- echo shar: End of shell archive.
- exit 0
-